package net.rafaeltoledo.security.util; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.Signature; import android.util.Base64; import android.util.Log; import java.security.MessageDigest; public class SignatureUtils { private static final String TAG = SignatureUtils.class.getSimpleName(); private static final String SIGNATURE = "0P333z1O57jHJ87piTMi3W6VuQU=\n"; public static boolean checkSignature(Context context) { try { PackageInfo packageInfo = context.getPackageManager() .getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES); for (Signature signature : packageInfo.signatures) { MessageDigest sha = MessageDigest.getInstance("SHA"); sha.update(signature.toByteArray()); final String currentSignature = Base64.encodeToString(sha.digest(), Base64.DEFAULT); if (SIGNATURE.equals(currentSignature)) { return true; } } } catch (Exception e) { Log.e(TAG, "Failed to check signature", e); } return false; } }